In a Differential Pulse Code Modulation (DPCM) system referred to as Independent Search, IS, that has been suggested by the Moving Picture Experts Group and described in articles 1, 2 and 3, identified at the end of the specification that are hereby incorporated by reference, three types of frames are used as illustrated in FIG. 1. The letters indicate the type of frame, and the numerical subscripts indicate the order of occurrence of the frames at the input to the system. I0 and I9 are called intraframes. Each of these interframes is encoded by using only pixels within the frame. The encoded frames are then transmitted.
A predicted frame such as P.sub.3 is encoded from I0 in the following manner. P.sub.3 is partitioned into identical blocks, e.g. having eight pixels in a side, that are called motion blocks. For each motion block in P.sub.3, a search is made in the I0 frame for a block of the same shape and size that matches the motion block. When the matching block is located, its position relative to the motion block is indicated by a motion vector (mv) representing the number of pixels left or right and the number of pixels up or down from the motion block to the matching block. These motion vectors are transmitted. Also, the differences between the motion blocks and corresponding matching blocks are formed. This is called residue, and it is encoded and transmitted. At the decoder, the I.sub.0 frame is decoded and the predicted frame P.sub.3 is formed by displacing appropriate matching blocks in I0 using the motion vectors. The residue for the various blocks is then added. The frame P6 is encoded in like manner from P.sub.3. When a number of P frames have been encoded from preceding P frames in this manner, the accumulative error may become so great that another I frame is sent as described, and a new series of P frames is formed from it. The I and P frames are called anchor frames.
The B frames occur between anchor frames, and the motion vectors used in encoding them are illustrated in FIG. 2. The first numeral in a subscript of a motion vector mv indicates the frame in which a motion block is located and the second numeral indicates the frame being searched for a matching block. Thus, in encoding the frame P.sub.3 as noted above, mv.sub.30 is a motion vector indicating the position of a block in I0 that matches a motion block in frame P.sub.3 and mv.sub.63 is a motion vector indicating the position of a block in P.sub.3 that matches a motion block in P6.
For each motion block in a B frame, two motion vectors are derived, one referenced to a subsequent anchor frame and one anchor referenced to a previous anchor frame. Thus, mv.sub.23 indicates the position of a matching block in P.sub.3 relative to a motion block in B.sub.2 and mv.sub.20 indicates the position of a matching block in I0 relative to a motion block in B.sub.2. What to transmit to the decoder can be determined by finding for each block which of the following modes of operation produces the least Mean Square Error (MSE) as this will reduce the bit rate required. For each motion block, the MSE is calculated by adding the squares of the differences between the corresponding pixels of the motion block and the matching block and dividing the result by the number of pixels in the motion block. In what is called a backward mode, the MSE is calculated between the motion block in B.sub.2 and the matching block in P.sub.3, and in a forward mode, the MSE calculation is done with the matching block being in I0. In what is called an interpolative mode, the matching blocks in P.sub.3 and I0 are averaged, and the MSE is calculated with this averaged matching block. Whichever mode produces the least MSE is conveyed to the decoder. Thus, if the backward mode produces the least MSE, a motion vector mv.sub.23 is transmitted along with an indication that it is the backward vector, and if the forward mode produces the least MSE, a motion vector mv.sub.20 is transmitted along with an indication that it is the forward vector. If the interpolative mode produces the least MSE, both vectors mv.sub.23 and mv.sub.20 are transmitted along with an indication that both vectors are being transmitted. Of course, for the selected mode, the residue obtained by subtracting the matching block from the motion block is also encoded and transmitted.
FIG. 1 shows the various frames in the order that they are received by the encoder and presented to the viewer, and FIG. 3 illustrates the order in which the frames of FIG. 1 are processed. Both P.sub.-3 and I.sub.0 must be available before B.sub.-2 and B.sub.-1 can be processed as described above, and I.sub.0 must be retained in memory until P.sub.3 is available before B.sub.1 and B.sub.2 can be processed. The frame order of FIG. 3 is also the order in which the frames are transmitted.
In summary, transmission must include the I.sub.0 frames, the P to I frame motion vectors such as mv.sub.30, the residue for predicted frames such as P.sub.3, the residue for each B frame that results from the selected mode of operation and at least one motion vector for each B frame along with signals indicating the mode of operation that has been selected. How a decoder can reconstruct the frames from this information is thought to be obvious.
In article 4, which is incorporated herein by reference, a differential pulse code modulation system is described that is like the IS system described above except for the fact that the motion vectors for the B frames are derived from motion vectors such as mv.sub.30 or mv.sub.63 of FIG. 2 that indicate the relative position of a block in an anchor frame that matches a block in the next anchor frame. The motion vector selected for a motion block in a B frame is the motion vector for a block in the later anchor frame that is in the same spatial position. If linear motion is assumed, a motion vector mv.sub.20 (i, j) would equal 2/3mv.sub.30 (i, j) and mv.sub.23 (i, j) would equal -1/3mv.sub.30 (i, j). While this method has the advantage of not transmitting motion vectors for the B frames, the motion vectors that are used require the transmission of a significant amount of residue in most cases.
In article 5, which is incorporated herein by reference, the blocks in the earlier and later anchor frames that are at the ends of a vector such as mv.sub.30 or mv.sub.63 that pass through a block in a B frame are averaged to produce the data in that block. Although this method does not require the transmission of motion vectors for the B frames, it suffers from gap and overlap problems.